译文|Pulsar Schema Registry
本文为《Pulsar Schema Registry》中文翻译版本。
原文首发于:
https://www.splunk.com/en_us/blog/it/the-pulsar-schema-registry.html
旧方法:零沟通,多困扰
解决方案:Pulsar Schema Registry
Pulsar 2.0 版本[1]包含了新的 Pulsar schema registry[2]。针对上述问题,Pulsar schema registry 是一个更好的解决方案。Schema registry 使 producer 和 consumer 通过 Pulsar broker 即可沟通 Pulsar topic 的数据结构,而不需要借助外部协调机制。Pulsar 支持通过 REST 接口[3]或 producer 指定并上传数据结构(即数据 schema)。用消息名称和消息所代表的 schema 版本为通过系统的每条数据依次进行标记。通过数据 schema,可以发现在系统中传输的全部消息,因此用户可以构建随数据变化而灵活变化的系统。
除此之外,schema registry 可以追踪 schema 版本之间的数据兼容性。在上传新 schema 时,registry 确保旧 consumer 可以读取新 schema 版本,从而确保 producer 不会中断 consumer。Schema 类型可以在 broker 中定义“兼容”,从而实现了 schema 版本之间的数据兼容性。例如,添加字段的 JSON schema 可能会被认定为可兼容,因为终端系统可以在不更新信息的情况下消费此 JSON schema。然后,用户可以用新 schema 升级 producer,并生产消息,但不必担心 consumer 会被数据中断。
要使用 schema,只需为 producer 和 consumer 添加一条信息。在指定 schema 后,用户可以发送、接收数据对象。客户端和 broker 会相互协调,以确保对象符合 schema 定义。
在以下示例中,producer 和 consumer 将以 JSON 格式交换数据。为将此消息同步给 broker,由 broker 所需的 schema 实例化 producer 和 consumer,以验证 producer 和 consumer 之间的兼容性。在这种情况下,使用 JSONSchema 自检 SensorReading 类(与 Jackson 兼容的 POJO),并创建 JSON schema。在连接时,将此信息传输给 broker,并由 broker 检查兼容性。如果认定 producer 或 consumer 不兼容,则以错误终止此连接。
PulsarClient client =PulsarClient.builder()
.serviceUrl("pulsar://localhost:6650")
.build();
Producer<SensorReading> producer =
client.newProducer(JSONSchema.of(SensorReading.class))
.topic("sensor-data")
.create();
Consumer<SensorReading> consumer =
client.newConsumer(JSONSchema.of(SensorReading.class)
.topic("sensor-data")
.subscriptionName("sensor-subscriber")
.subscribe();
Apache BookKeeper 存储层不仅用于追踪流数据,还支持立即可用的 Pulsar schema registry。Schema 存储后端完全可插拔,并且与其他 schema registry 工具互通,从而允许用户利用现有 schema。
目前,Pulsar schema registry 支持 JSON、“二进制”(旧二进制数据流)、Avro、Protobuf 等格式。与 schema 存储一样,schema 支持完全可插拔,并且可扩展。更多关于 Pulsar schema registry 的信息,参阅 Pulsar 官方文档[4]。
引用链接
[1]
Pulsar 2.0 版本:
http://pulsar.apache.org/docs/en/pulsar-2.0/[2]
schema registry:
https://pulsar.apache.org/docs/en/concepts-schema-registry/[3]
REST 接口:
http://pulsar.apache.org/admin-rest-api/?version=2.4.2#tag/schemas[4]
Pulsar 官方文档:
http://pulsar.apache.org/docs/en/next/schema-get-started/
相关阅读
• 《译文 | 使用 Apache Pulsar Functions 进行简单事件处理》• 《快来看!Schema 真的好简单啊!》• 《译文 | 使用 Apache Pulsar Functions 进行简单事件处理》• 《Pulsar IO 中 Schema 的调用流程》
点击「阅读原文」进入 Pulsar 世界!